// node 7_打印对称数.js

// Array.keys() 将数组的key值按数组的形式返回
// Array.from() 将类数组转换为数组
// Number()     转数字
// toString()   转字符串
// split()      将字符串分割为数组
// reverse()    数组倒序
// join()       将数组连接为字符串
// filter()     迭代函数，数据清洗，对数组每一项都运行传入的函数，返回符合条件的结果所组成的数组

//打印1到1000之间所有对称数


//得到一个元素为1到10000的数组
let arr = [...Array(10000).keys()].map(item => item+1)
// let arr = Array.from({length:10000},((v,i) => i+1))

//方法1
function operateArr1(item) {
    return Number(item.toString().split('').reverse().join(''))
}
let arr1 = arr.filter(item => {
    return item === operateArr1(item)
})
console.log("方法1:")
console.log(arr1)

//方法二
//直接关注对称数的特点
//1-9
//11-99
//101-999
//1001-9999
function operateArr2() {
    let newArr = []
    for(let i=1;i<=9;i++){
        newArr.push(i)
        newArr.push(i*10+i)
        for(let j=0;j<=9;j++){
            newArr.push((i*100+i)+j*10)
            newArr.push((i*1000+i)+(j*10+j)*10)
        }
    }
    return newArr
}
console.log("方法2:")
console.log(operateArr2().sort((a,b)=>a-b))

console.log("原数组:")
console.log(arr)